/* Araujo Heiker CI. 19726991
 * Goyo Willandher CI.20666542
 * Rodriguez Rafael CI.20009872
 * Williams Roman CI.20016812 
 * Morett Gilberth CI.20929667*/

package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Vector;

import vista.PantallaDeposito;
import modelo.Deposito;
import modelo.Drogueria;

public class ControladorPantallaDeposito implements ActionListener {
	
	private PantallaDeposito pantallaDeposito;
	private Drogueria drogueria;
	private String codigo;
	
	public ControladorPantallaDeposito(Drogueria drogueria){
		
		pantallaDeposito = new PantallaDeposito();
		pantallaDeposito.agragarListener(this);
		pantallaDeposito.setVisible(true);
		pantallaDeposito.setLocationRelativeTo(null);
		this.drogueria=drogueria;
		this.cargarListado();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		
		if (e.getActionCommand().equalsIgnoreCase("Incluir")){
			
			incluir();
			
			}
		else if(e.getActionCommand().equalsIgnoreCase("Modificar")){
			
			if (drogueria.cantidadDepositos()==0){
				
				pantallaDeposito.mostrarMensaje("¡No existen Depositos para modificar!");
				
			}else if (pantallaDeposito.nroFilasSeleccionadas()==0){
				
				pantallaDeposito.mostrarMensaje("Primero Debe Seleccionar el Depósito a modificar");
				
			}else{
				codigo = pantallaDeposito.obtenerCodigoDepositoFilaSeleccionada();
				modificar();
			}
		}else if (e.getActionCommand().equalsIgnoreCase("Eliminar")){
			if(pantallaDeposito.nroFilasSeleccionadas()==0){
				pantallaDeposito.mostrarMensaje("Primero Debe Seleccionar el Depósito a Eliminar");
			
			}else
				Eliminar();
		}
		
	}
	
	//Este metodo permite cargar el arreglo de Depositos  de la drogueria en la tabla de Depositos de la pantalla Depositos;
	//Solo cargara los Depositos cuyo estatus sea Activo
	
	public void cargarListado() {
		
		ArrayList<Deposito> depositos = drogueria.getDepositos();
		for (int i=0; i<drogueria.cantidadDepositos(); i++){
			Deposito deposito = depositos.get(i);
			if (deposito.getStatus()=='E') {
				continue;
			}
			Vector <String> datoDeposito = new Vector<String>(4,1);
			String codigo = deposito.getCodigo();
			String nombre = deposito.getNombre();
			String cantEstantes = String.valueOf(deposito.cantEstantes());
			String cantPaletas = String.valueOf(deposito.cantPaletas());
			datoDeposito.add(codigo);
			datoDeposito.add(nombre);
			datoDeposito.add(cantEstantes);
			datoDeposito.add(cantPaletas);
			pantallaDeposito.agregarFilaDeposito(datoDeposito);
		}
		
	}
	// Metodo que permite instanciar un nuevo controlador para incluir un nuevo deposito, ademas permite la actualizacion de la pantalla Deposito
	public void incluir() {
			
		pantallaDeposito.dispose();
		new ControladorPantallaIncluirDeposito(drogueria, "Incluir", null);
		
	}
	
	public void modificar(){
			
		pantallaDeposito.dispose();
		new ControladorPantallaIncluirDeposito(drogueria, "Modificar", codigo);
	}
	
	public void Eliminar() {
		
		
		String cod = pantallaDeposito.obtenerCodigoDepositoFilaSeleccionada();
		pantallaDeposito.eliminarFilaSeleccionada(pantallaDeposito.getFilaSeleccionada());
				
		for(int i =0;i<drogueria.cantidadDepositos();i++)
		{
			if (cod.equals(drogueria.getUnDeposito(i).getCodigo()))
				drogueria.getUnDeposito(i).setStatus('E');
				
		}
		pantallaDeposito.mostrarMensaje("Registro Eliminado Satisfactoriamente");
		
	}	
}